﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
namespace WindowsGame7
{
    class Level1 : SceneBase
    {
        private Personagem personagem;
        private Objeto2D fundo;
        private Inimigo inimigo;
        int quantidade;
        Random random;
        double PI = Math.PI
            ;
        List<Objeto2D> Tiles;
        int[,] TileMap = new int[,] {{1,1,0,1},
                                     {1,1,0,1}};
        Objeto2D tile;

        public override void start()
        {
            personagem = new Personagem(Game1.self.Content.Load<Texture2D>("personagem"));
            personagem.posicao.X = Game1.self.Window.ClientBounds.Width / 2;
            personagem.posicao.Y = Game1.self.Window.ClientBounds.Height / 2;
            fundo = new Objeto2D(Game1.self.Content.Load<Texture2D>("BACKGROUND"));
            fundo.posicao.X = Game1.self.Window.ClientBounds.Width / 2;
            fundo.posicao.Y = Game1.self.Window.ClientBounds.Height / 2;
            inimigo = new Inimigo(Game1.self.Content.Load<Texture2D>("inimigo"));

            quantidade = 3;
            random = new Random();
            for (int i = 0; i <= quantidade; i++)
            {
                InimigoManager.AddInimigo(new Vector2(random.Next(personagem.textura.Height/2,500),random.Next(personagem.textura.Width/2,400)));
            }

            tile = new Objeto2D(Game1.self.Content.Load<Texture2D>("tile"));
            Tiles = new List<Objeto2D>();
        }

        public override void update(GameTime gameTime)
        {
            personagem.Move();
            InimigoManager.Update(personagem);
            for (int i = 0; i < InimigoManager.listaInimigos.Count; i++)
            {
                if (InimigoManager.listaInimigos[i].hitTestObject(personagem))
                {
                    EnemyBounce(personagem, InimigoManager.listaInimigos[i]);
                }
            }

            for (int i = 0; i < InimigoManager.listaInimigos.Count; i++)
            {
                if (InimigoManager.listaInimigos[i].hitTestObject(tile))
                {
                    EnemyBounce(tile, InimigoManager.listaInimigos[i]);
                }
            }
        }

        public override void draw(GameTime gameTime, SpriteBatch spriteBatch)
        {

          fundo.Draw(spriteBatch);
          personagem.draw(personagem, spriteBatch);
          InimigoManager.Draw(spriteBatch);
          tile.Draw(spriteBatch);
        }

        public override void terminate()
        {
            
        }

        void EnemyBounce(Objeto2D objeto, Inimigo enemy)
        {
          double radians = Math.Atan2(objeto.posicao.Y - enemy.posicao.Y
                           , objeto.posicao.X - enemy.posicao.X);

          double graus = (2 * PI) - radians;
         enemy.Velocidade = enemy.Velocidade + (float)graus * -1;
        }

    }
}
